

package com.beans;


import com.entidades.Negocios;
import com.entidades.Ofertas;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.transaction.UserTransaction;
import org.primefaces.event.map.OverlaySelectEvent;
import org.primefaces.event.map.PointSelectEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;

    
/**
 * <p>A simple managed bean to mediate between the user
 * and the persistence layer.</p>
 * @author rlubke
 */
@Named("cBusMap")
public class controlBuscarOfertasMapa  implements Serializable {
    /**
     * <p>The <code>PersistenceContext</code>.</p>
     */
    @PersistenceContext 
    private EntityManager em;
    
    /**
     * <p>The transaction resource.</p>
     */
    @Resource 
    private UserTransaction utx2;


    //variablesm buscar ofertas/cupones
    private Ofertas selectedOfe;
    private String tipoOferta;
    private Negocios negSelected;
    private Integer ofeIdSelected;
    
    //final MapModel ofertasModel = new DefaultMapModel();
    private Marker marker; 
    private MapModel ofertasModel;

    public Integer getOfeIdSelected() {
        if(ofeIdSelected == null){
            ofeIdSelected = 1;
        }
        return ofeIdSelected;
    }

    public void setOfeIdSelected(Integer ofeIdSelected) {
        this.ofeIdSelected = ofeIdSelected;
    }

    

    public Negocios getNegSelected() {
        return negSelected;
    }

    public void setNegSelected(Negocios negSelected) {
        this.negSelected = negSelected;
    }

    /*public MapModel getOfertasModel() {
        //crearModelMap();
        return ofertasModel;
    }

    public void setOfertasModel(MapModel ofertasModel) {
        this.ofertasModel = ofertasModel;
    }*/

    
    
    public Marker getMarker() {
        return marker;
    }

    public void setMarker(Marker marker) {
        this.marker = marker;
    }
    
    private List<Negocios> vListaNegociosMapa;
    

    public Ofertas getSelectedOfe() {
        return selectedOfe;
    }

    public void setSelectedOfe(Ofertas selectedOfe) {
        
        Map sMap;
        sMap = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
        controlNegocios cn = (controlNegocios) sMap.get("cNeg");
        
        cn.negocioOferta = cn.findNegocioPorId(selectedOfe.getOfeNegocio());
        
        this.selectedOfe = selectedOfe;
    }

    public String getTipoOferta() {
        if(tipoOferta == null){tipoOferta = "";}
        return tipoOferta;
    }

    public void setTipoOferta(String tipoOferta) {
        this.tipoOferta = tipoOferta;
    }
/*
    public void crearModelMap(){
        
        ofertasModel = new DefaultMapModel();
        
        vListaNegociosMapa = findNegociosMapa();
        Integer posComa;
        String stLat;
        String stLng;
        for(int i=0;i<vListaNegociosMapa.size();i++){

            posComa = vListaNegociosMapa.get(i).getNegCoordenadas().indexOf(",");
            stLat = vListaNegociosMapa.get(i).getNegCoordenadas().substring(0,posComa);
            stLng = vListaNegociosMapa.get(i).getNegCoordenadas().substring(posComa+1);
            Marker m = new Marker(new LatLng(Double.valueOf(stLat),Double.valueOf(stLng)),vListaNegociosMapa.get(i).getNegNombre());
            ofertasModel.addOverlay(m);
        
        }
        
    }*/


    public List<Negocios> findNegociosMapa() {
        
            if(tipoOferta==null){
                tipoOferta = "";
            }
            
            String SQLstring;
            SQLstring = "select * from bdagrupados.negocios "
                       +" where (select count(*) from bdagrupados.ofertas where ofe_tipo like '%" + tipoOferta + "%' and ofe_negocio = id_negocio) > 0";
            System.out.println("SQL ejecutada: " + SQLstring);
            Query query = em.createNativeQuery(SQLstring, Negocios.class);
            //Query query = em.createNamedQuery("Ofertas.findAll");
            return query.getResultList();
    }
        
    public List<Ofertas> findOfertasNegocio(String nomNeg) {
            
            if(tipoOferta==null){
                tipoOferta = "";
            }
        
            String SQLstring;
            SQLstring = "select * from bdagrupados.ofertas "
                       +" where ofe_tipo like '%" + tipoOferta + "%' and "
                       +" ofe_fecfin >= CURDATE() and "
                       + "ofe_negocio = (select id_negocio from bdagrupados.negocios where neg_nombre = '" + nomNeg + "') order by ofe_fecalta desc";
            System.out.println("SQL ejecutada: " + SQLstring);
            Query query = em.createNativeQuery(SQLstring, Ofertas.class);
            //Query query = em.createNamedQuery("Ofertas.findAll");
            return query.getResultList();
    }
        
  

    
    }
